package anbow.math;

/**
 *   集合的子集
 * 集合长度是4，2^4
 * {1,2,3,4}
 * 0   0000      {}
 * 1   0001      {1}
 * 2   0010      {2}
 * 3   0011      {1,2}
 * ……
 * 
 * 14  1110      {2，3，4}
 * 15  1111	     {1,2,3,4}
 */

public class SubSets {

	public static void main(String[] args) {
		int[] a = {1,2,33,4};
		
		for(int i=0;i<=Math.pow(2, a.length)-1;i++) {
			System.out.print("{");
			int n = i;//当前正在处理的要去转换的二进制数
			int index = 0;//代表第几次除2
			while(n>0) {
				if(n%2==1) {
					if(n>2) {
						System.out.print(a[index] +" ");
					}else {
						System.out.print(a[index]);
					}
					
				}
				index++;
				n=n/2;
			}
			//while循环结束，意味着一个i被处理完了
			System.out.println("}");
		}
		
	}

}
